<html>
<head>
    <title>特殊变量</title>
</head>
<body>

<#-- 定义变量 -->
<#assign assign_email="hxstrive@outlook.com (来自assign指令)">
<#global global_email="hxstrive@outlook.com (来自global指令)">
<#-- 保存变量名，变量名用空格隔开 -->
<#assign variable_name="java name">

<#-- 可以用来访问当前命名空间的哈希表 -->
<p>${.namespace.assign_email}</p>
<p>${.namespace.java_email!'-'}</p>


<#-- 使用动态名称访问顶层变量 -->
<p>${.vars[variable_name]}</p>
<p>${.vars["java name"]}</p>


<#-- 返回模版输出的字符编码，如果没有设置编码，则不存在该变量 -->
<p>${.output_encoding!''}</p>


<#-- 获取当前日期 -->
<p>${.now}</p>
<p>当前日期：${.now?date}</p>
<p>当前时间：${.now?time}</p>

<#-- 获取版本信息 -->
<p>${.version}</p>


<#-- 获取本地化信息 -->
<p>${.lang}</p>
<p>${.locale}</p>


<#-- 获取模版名称 -->
<p>${.current_template_name!''}</p>
<p>${.template_name}</p>


<#-- data_model -->
${.data_model.variable1!'not access'}
${.data_model['variable1']!'not access'}

${.data_model.variable2!'not access'}
${.data_model['variable2']!'not access'}

${.data_model.siteName!'not access'}
${.data_model['siteName']!'not access'}


<#-- error -->
<#attempt>
    <div>变量值: ${.data_model.accessNotExistVariable}</div>
<#recover>
    <div>错误信息：${.error}</div>
</#attempt>


<#-- globals -->
<#assign globalVar1="http://www.hxstrive.com">
<#global globalVar2="http://www.hxstrive.com">
${.globals.globalVar1!'not access'}
${.globals.globalVar2!'not access'}
${.globals.globalVar3!'not access'}


<#-- locals -->
<#--<#assign localVar1="http://www.hxstrive.com">-->
<#--<#global localVar2="http://www.hxstrive.com">-->
<#--${.locals.localVar1!'not access'}-->
<#--${.locals.localVar2!'not access'}-->
<#--${.locals.localVar3!'not access'}-->

<#-- main -->
<#import "sub/template19_sub.ftl" as My >
<#assign mainVar="main template variable">
<#global mainVar2="global varable">
<@My.testMacro arg1="Hello FreeMarker" />

</body>
</html>